//
//  BuzzDao.h
//  Buzz API Demo
//
//  Created by Peter Hopkins on 5/6/10.
//  Copyright 2010 Google, Inc. All rights reserved.
//
//  Licensed under the Apache License, Version 2.0 (the "License");
//  you may not use this file except in compliance with the License.
//  You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
//  Unless required by applicable law or agreed to in writing, software
//  distributed under the License is distributed on an "AS IS" BASIS,
//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//  See the License for the specific language governing permissions and
//  limitations under the License.
//

#import <Foundation/Foundation.h>

@class NSFetchedResultsController;
@class NSManagedObjectContext;
@class NSPersistentStoreCoordinator;

@class GDataOAuthAuthentication;
@class GDataServiceGoogle;

@class BuzzDao;
@class Comment;
@class Post;

@protocol BuzzDaoDelegate
-(void)dao:(BuzzDao *)dao storageError:(NSError *)error;
-(void)dao:(BuzzDao *)dao networkError:(NSError *)error;
@end


@interface BuzzDao : NSObject {
 @private
  NSPersistentStoreCoordinator *store_;
  NSManagedObjectContext *context_;

  GDataServiceGoogle *buzzService_;
  int syncCount_;

  id <BuzzDaoDelegate> delegate_;
}

-(id)initWithDelegate:(id <BuzzDaoDelegate>)delegate;

-(BOOL)loadStore;
-(void)setAuthorizer:(GDataOAuthAuthentication *)auth;

-(void)syncConsumption;
-(void)syncComments:(Post *)post;
-(void)syncLikers:(Post *)post;

-(NSFetchedResultsController *)fetchConsumption:(id)delegate;
-(NSFetchedResultsController *)fetchCommentsForPost:(Post *)post delegate:(id)delegate;
-(NSFetchedResultsController *)fetchLikersForPost:(Post *)post delegate:(id)delegate;

-(Post *)newPost;
-(Comment *)newComment;
-(void)post:(Post *)post delegate:(id)delegate selector:(SEL)selector;
-(void)comment:(Comment *)comment onPost:(Post *)post delegate:(id)delegate selector:(SEL)selector;

-(void)reset;

@end
